冬夏葵 HLSLの魔導書
目的 : シェーダーワカルマンになる
結論 : 内積は神
こいつを思いついた奴は天才touka_aoi.icon
色彩に関するグラスマンの法則(グラスマンのほうそく)とは、人の色覚に関する経験則で、色彩感覚は、異なる光の色の線形結合により定義できることを示している
天才すぎるtouka_aoi.icon
数学において、アフィン空間(あふぃんくうかん、英語: affine space, アファイン空間とも)または擬似空間(ぎじくうかん)とは、幾何ベクトルの存在の場であり、ユークリッド空間から絶対的な原点・座標と標準的な長さや角度などといった計量の概念を取り除いたアフィン構造を抽象化した幾何学的構造である。(代数的な)ベクトル空間からどの点が原点であるかを忘れたものと考えることもできる。
ほうtouka_aoi.icon
数学の歴史の本が欲しい
はちょっと違うし...
文献
https://s.wordpress.com/mshots/v1/https://www.shoeisha.co.jp/book/detail/9784798164281?&.png
さすがに進める
WindowsAPI で詰まったがとりあえず
WIndowsAPIを軽くやったおかけで読める...読めるぞ!!
いつもの
https://scrapbox.io/files/60eda4bf29255400220ff524.png
透視変換はDirectXの魔導書よめってさtouka_aoi.icon
punoko.icon
ワールド空間は自由に作れ
もしあなたが世界がほしいと思ったなら3つのベクトルを用意しなさいtouka_aoi.icon touka-aoi 199x -
ディスクリプタヒープとるとき送りたいデータサイズ分メモリ領域確保しないといけないぞ
https://scrapbox.io/files/60f05b4608f493001e0a19b1.png
変換したtouka_aoi.icon
Lembertシェーダ
光の陰影を実装する
手順
正規化する
光のベクトルと法線ベクトルをとる
-1をかける
1に近いほど光がつよい
as a result
https://scrapbox.io/files/60f7d58de507aa0020b39ef2.png
光源は右上あたり
phong鏡面反射
反射ベクトルと、視線ベクトルの内積をとり、1に近いほど強い反射がとれるアルゴリズム
反射ベクトルRは
$ R = P + 2(-P \cdot N) N
で求まる。
ここで
P : 入射ベクトル
N : 法線ベクトル
ピクセルシェーダで光の計算するやつだよなヲ.icon
グーローは頂点シェーダで光の計算
参考
結果
拡散 1乗 ・ 非関数処理
code:HLSL
float3 refVec = ligDirection + 2 * dot(-psIn.normal, ligDirection) * psIn.normal;
https://scrapbox.io/files/60f7e17a80c3860023168161.png
拡散 1乗 関数処理
https://scrapbox.io/files/60f7df7150ce0d0022fe9721.png
拡散5乗 関数処理
https://scrapbox.io/files/60f7df4d8e7e24001c8c7cdc.png
乗算するほどくっきりと反射するようになる。
低い値と高い値が分かれるため
黄色いポットきもすぎるので直す
テクスチャのUVマッピングに割り込めばいいよなぁtouka_aoi.icon*7
https://scrapbox.io/files/60f7e348f92d33002249fa01.png
EZtouka_aoi.icon
ambient~
光の影響をあると仮定して全方向に足すだけ
https://scrapbox.io/files/60f91973d2c15a001cb1ad75.png
意外と優しい実装方法だった。
ポイントライト実装できんtouka_aoi.icon
やだやだやだ
ラスタライザー
Vertex Shader と Fragment Shader の中間層
塗りつぶすピクセルを決定する。
ここで補間も行っているっぽい
頂点カラーによるピクセルシェーダ(フラグメントシェーダ)の補間も行う
DirectXでは頂点は時計回りが表。
DirectX10以降ではShaderを書かないと描画できない
DirectX 9 の本 ...
頂点シェーダ
頂点の位置をきめるだけのシェーダ
行列変換ステージ